﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Modelo;
using Utilidades;

namespace Interfaz
{
    /// <summary>
    /// Interaction logic for PrimerCambio.xaml
    /// </summary>
    public partial class PrimerCambio : UserControl
    {
        Usuario usuario;
        public PrimerCambio()
        {
            InitializeComponent();
            usuario = Actual.Instance;

        }

        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {

        }
        public void setMensajePass(PasswordBox text, string mensaje)
        {


            text.Background = System.Windows.Media.Brushes.Red;


            text.ToolTip = mensaje;

        }
        public bool validarPass1()
        {
            if (usuario.Contrasena != EncriptorAES.Encriptar(passwordBox1.Password))
            {
                setMensajePass(passwordBox1, "El password antiguo no coincide");
                return false;
            }
            return true;
        }
        private void passwordBox1_LostFocus(object sender, RoutedEventArgs e)
        {
            validarPass1();
        }
        public bool validarPass2()
        {
            try
            {
                Procesos.Validar.validarPassword(passwordBox2.Password);
                return true;
            }
            catch (Exception ex)
            {
                setMensajePass(passwordBox2, ex.Message);
                return false;
            }
        }
        private void passwordBox2_LostFocus(object sender, RoutedEventArgs e)
        {
            validarPass2();
        }
        public bool validarPass3()
        {
            try
            {
                Procesos.Validar.validarPasswordsIguales(passwordBox2.Password, passwordBox3.Password);
                return true;
            }
            catch (Exception ex)
            {
                setMensajePass(passwordBox3, ex.Message);
                return false;
            }
        }
        private void passwordBox3_LostFocus(object sender, RoutedEventArgs e)
        {
            validarPass3();
        }

        private void passwordBox1_GotFocus(object sender, RoutedEventArgs e)
        {
            PasswordBox text = sender as PasswordBox;
            text.ToolTip = null;
            text.Background = System.Windows.Media.Brushes.White;
        }
        public bool validarTodos()
        {
            bool p1 = validarPass1(), p2 = validarPass2(), p3 = validarPass3();
            return p1 && p2 && p3;
        }
        private void button1_Click(object sender, RoutedEventArgs e)
        {

        }

        private void button1_Click_1(object sender, RoutedEventArgs e)
        {
            try
            {
                if (validarTodos())
                {
                    DateTime fecactual = DateTime.Now.Date;
                    Procesos.ControlUsuario.cambiarContrasena(usuario, passwordBox2.Password,fecactual);
                    MessageBox.Show("Cambio Realizado con exito");
                    if (usuario.Cargo.Equals(" AdministradorNuevo"))
                    {
                        usuario.Cargo = "Administrador";
                        InicioAdmin inicio = new InicioAdmin(usuario);
                        inicio.Show();
                        
                    }
                    else
                    {
                        usuario.Cargo = "Empleado";
                        InicioEmpleado inicio = new InicioEmpleado(usuario);
                        inicio.Show();

                    }
                    Procesos.ControlUsuario.cambiarCargo(usuario, usuario.Cargo);
                    Window w = Window.GetWindow(this);
                    if (w!=null)
                        w.Close();
                    
                    limpiar();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void limpiar()
        {
            passwordBox1.Password = String.Empty;
            passwordBox2.Password = String.Empty;
            passwordBox3.Password = String.Empty;

        }
    }
}
